/**
 * Created by Administrator on 2017/9/22 0022.
 */
/*
* 应用程序的启动（入口）文件
* */
//加载express模块
var express=require('express');
//加载模板出来模块
var swig=require('swig');
//加载body-parser模块，用来处理前端带过来的数据
var bodyParser=require('body-parser');
//加载cookie模块
var Cookies=require('cookies');
//加载数据库模块
var mongoose=require('mongoose');
//创建app应用=>NodeJs Http.createServer（）
var app=express();

var User=require('./models/User');

//配置应用模板
//定义当前应用所使用的模板引擎
//第一个参数：模板引擎的名称，同时也是模板文件的后缀
//第二个参数：表示用于解析处理模板内容的方法
app.engine('html',swig.renderFile);

//设置模板文件存放的目录，第一个参数必须是views，第二个参数是目录
app.set('views','./views');

//注册所使用的模板引擎,第一个参数必须是view engine，
// 第二个参数和这个方法中定义的模板引擎的名称是一致的
app.set('view engine','html');

//在开发过程中，需要取消模板缓存
swig.setDefaults({cache:false});
//设置静态文件托管，比如是css，js，图片之类的
//当用户访问的URL以/public开始，直接返回对应__dirname+'/public'下的文件
app.use('/public',express.static(__dirname+'/public'));

//bodyParser设置
app.use(bodyParser.urlencoded({extended:true}));

//设置cookie
app.use(function(req,res,next){
     req.cookies=new Cookies(req,res);
     //解析登录用户的登录信息
    req.userInfo={};
    if(req.cookies.get('userInfo')){
        try{
            req.userInfo=JSON.parse(req.cookies.get('userInfo'))

            //实时判断用户数据类型，是否是管理员
            User.findById(req.userInfo._id).then(function(userInfo){
                req.userInfo.isAdmin= Boolean(userInfo._id);
                next();
            });

        }catch (e){
            next();
        }
    }else {
        next();
    }

});

//模块划分
app.use('/admin',require('./routers/admin'));//后台模块
app.use('/api',require('./routers/api'));//接口模块
app.use('/',require('./routers/main'));


//数据库接口连接
mongoose.connect('mongodb://localhost:27017',function(err){
    if(err){
        console.log('数据库连接失败');
    }else {
        console.log('数据库连接成功');
        //监听http请求
        app.listen(8080);
    }
});


